//
//  NSString+MD5.m
//  NewNest
//
//  Created by hesiyao on 16/1/25.
//  Copyright © 2016年 www.lanou3g.com蓝鸥科技. All rights reserved.
//

#import "NSString+MD5.h"

#import <CommonCrypto/CommonDigest.h>

@implementation NSString (MD5)

/// 加密算法实现
- (NSString *)stringFromMD5
{
    //  转化为C字符串
    const char *string = self.UTF8String;
    // 获取字符串长度
    int  length = (int)strlen(string);
    // 创建字符串数组 接收MD5值
    // 一字节(byte)8位(bit) 两个字节十六位 两个字节是两个字符 可以表示1个16进制数 MD5结果为32位 实际由两个16进制组成
    unsigned char bytes[CC_MD5_DIGEST_LENGTH];
    // CC_MD5_DIGEST_LENGTH 一个宏 表示16
    // 用来加密的操作
    // 参数1 : 要加密的字符转
    // 参数2 : 源字符串长度
    // 参数3 : 用来保存的数组
    CC_MD5(string, length, bytes);
    // 创建可变字符串 保存MD5
    NSMutableString *outputString = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH];
    // 遍历保存MD5串的数组
    for (NSInteger i = 0; i < CC_MD5_DIGEST_LENGTH; i++) {
        // %x 十六进制输出
        [outputString appendFormat:@"%02x", bytes[i]];
    }
    return outputString;
}

@end
